const fs = require("fs")
var path = require('path');
/* 
 * @func  找出指定目录下最大的文件
 * @param {string} dir 
 * @param {function} cb  
 */

function findLargest(dir, cb) {
    fs.readdir(dir, (err, files) => {
        if (err) {
            
            return cb(err)
        }
        /* console.log("dir:", files.toString()); */
        var couter = files.length; // 数量
        var errored = false;   // 是否出错？ 

        var stats = [];

        /*  files.toString().split(",").forEach((file,index)=>{
             console.log(file);
            
             
             
         }) */
        files.forEach((file, index) => {
           /*  console.log(path.join(dir, file)); */
            fs.stat(path.join(dir, file), (err, stat) => {
                if (errored) return;
                if (err) {
                    errored = true;
                    return cb(err)
                }
                /* console.log(stat); */
                stats[index] = stat;
                if (--couter == 0) { // 最后一个
                    var fileStats = stats
                        // .map  把一个数组  变成一个新的数组  
                        .filter((stat) => stat.isFile());
                    let maxFileSize = 0;
                    for (let fileStat of fileStats) {
                        if (fileStat.size > maxFileSize) {
                            maxFileSize = fileStat.size;
                        }
                    }
                    cb(null, maxFileSize);
                    // console.log(largest);
                }
            })
        })


    })
}
findLargest('./1', (err, fileSize) => {
    if (err) {
        return console.error(err);
    }
    console.log('largest file war:', fileSize);
})